package com.br.aiops.receiver.es.config;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 配置实体类
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Config implements Serializable {

    public static final String RESULT_TYPE_TOTAL = "total";
    public static final String RESULT_TYPE_LIST = "list";
    public static final String RESULT_TYPE_GROUP = "group";

    /**
     * 规则id，唯一标识
     */
    private Long id;

    /**
     * 服务名称
     */
    private String service;

    /**
     * 错误码
     */
    private String errorCode;

    /**
     * 错误描述
     */
    private String message;

    /**
     * 请求方法
     */
    private String method;

    /**
     * 查询索引路径
     */
    private String endpoint;

    /**
     * 请求体
     */
    private String body;

    /**
     * 返回类型：total、list、group
     */
    private String resultType;

    /**
     * 查询返回的字段，逗号分隔；返回类型为list、group时用
     */
    private String resultFields;

    /**
     * 分组字段：返回类型为group时使用该字段进行分组
     */
    private String groupField;

    /**
     * 计算类型：如果返回为group类型，则按照该计算类型进行计算，包括：
     *  sum、avg、max、min、count
     */
    private String computeType;

    /**
     * 计算字段：如果返回为group类型，则按照该字段计算
     */
    private String computeField;

    /**
     * 过滤操作符，支持>、>=、==、<、<=符号；启动分组查询时，可以根据该操作符判断过滤
     */
    private String filterOperator;

    /**
     * 过滤的阈值
     */
    private double filterValue;

    /**
     * 定时执行表达式
     */
    private String cron;

    /**
     * 从现在开始，拉取最近的时间范围
     */
    private int lastMinutes;

    /**
     * 环境：local、pre、prod-zw、prod-yz
     */
    private String env;

    /**
     * 是否启用 1、启用 2、不启用
     */
    private Integer useStatus;

    /**
     * 配置更新时间
     */
    private Date updateTime;

    /**
     * 缓存的时间
     */
    private Date cacheTime;

}
